package info.motteke.qjdbc.db;

import info.motteke.qjdbc.dto.DtoMeta;
import info.motteke.qjdbc.exec.BatchStatement;
import info.motteke.qjdbc.exec.ResultSetStatement;
import info.motteke.qjdbc.operation.select.SelectOption;

/**
 * データベースに応じてSQL生成方法を変えるためのインターフェースを提供します。
 *
 * @author YWak
 *
 */
public interface DatabaseStrategy {

    public <T> ResultSetStatement<T> createSelectSQL(SelectOption option, DtoMeta<T> meta);

    public <T> BatchStatement<T> createUpdateSQL(DtoMeta<T> meta);

    public <T> BatchStatement<T> createInsertSQL(DtoMeta<?> meta);

    public <T> BatchStatement<T> createDeleteSQL(DtoMeta<?> meta);
}
